﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using LiclBases;
using System.Collections.Generic;
using com.creditos.be.liclEntities;
using com.creditos.be.liclBases;
using com.creditos.util.liclUtil;
using System.Collections.Specialized;
using com.creditos.be.liclSolcred;
using System.Text;
using LiclBases.Views;
using com.creditos.be.liclUtil;

public partial class solcred_FormsManReglasCentralRiesgo : CreditosPaseBase, IFormsManReglasCentralRiesgoView
{
    private FormsManReglasCentralRiesgoPresenter _presenter = new FormsManReglasCentralRiesgoPresenter();    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            _presenter.View = this;
            Master.TituloModulo = "Registro de Reglas Central de Riesgo";           
            _presenter.LoadManRegla();
            ListaCondiciones.Clear();
            ListaReglas.Clear();
            ListaCondicionesTotal.Clear();
            ListaReglasTotal.Clear();            
            UCBarraHerramientas1.btnCancelar.Visible = true;
            btnModificarRegla.Enabled = false;
            btnEliminarRegla.Enabled = false;
            if (Request.QueryString["Accion"] == "2")
            {
                ReglaCentralRiesgo oReglaCentral = new ReglaCentralRiesgo();
                oReglaCentral.Accion = 1;
                oReglaCentral.CodigoPlantilla = int.Parse((string)Session["CodigoPlantilla"]);                
                _presenter.ObtenerPoliticaCredito(oReglaCentral);                
                _presenter.ObtenerReglaNegocio(oReglaCentral);
                oReglaCentral.Accion = 2;
                _presenter.ObtenerReglaNegocioCondicion(oReglaCentral);
                UCBarraHerramientas1.btnGuardar.Visible = true;
                
            }
        }
        _presenter.View = this;       

        if (Request.QueryString["Accion"] == "2")
        {
            ReglaCentralRiesgo oReglaCentral = new ReglaCentralRiesgo();
            oReglaCentral.Accion = 1;
            oReglaCentral.CodigoPlantilla = int.Parse((string)Session["CodigoPlantilla"]);
            strDescripcionPlantilla = txtDescripcionPlantilla.Text;
            _presenter.ObtenerPoliticaCredito(oReglaCentral);
            _presenter.ObtenerReglaNegocio(oReglaCentral);
            oReglaCentral.Accion = 2;
            _presenter.ObtenerReglaNegocioCondicion(oReglaCentral);
        }
        else
        {
            ReglaCentralRiesgo oReglaCentral = new ReglaCentralRiesgo();
            oReglaCentral.Accion = 1;
            oReglaCentral.CodigoPlantilla = strCodigoPlantilla == null ? 0 : int.Parse(strCodigoPlantilla);            
            _presenter.ObtenerPoliticaCredito(oReglaCentral);                                    
            _presenter.ObtenerReglaNegocio(oReglaCentral);
            oReglaCentral.Accion = 2;
            _presenter.ObtenerReglaNegocioCondicion(oReglaCentral);
        }
    }

    protected override void DefineHandlers()
    {
        btnAgregarRegla.Click += new EventHandler(btnAgregarRegla_Click);
        btnModificarRegla.Click += new EventHandler(btnModificarRegla_Click);
        btnEliminarRegla.Click += new EventHandler(btnEliminarRegla_Click);      
        UCBarraHerramientas1.btnGuardar.Click += new EventHandler(btnGuardar_Click);
        UCBarraHerramientas1.btnCancelar.Click += new EventHandler(btnCancelar_Click);
        gvwReglasSeleccionar.SelectedIndexChanged += new EventHandler(gvwReglasSeleccionar_SelectedIndexChanged);
    }

    public void btnAgregarRegla_Click(object sender, EventArgs e)
    {
        strAccionRegla = "1";
        if (gvwReglasSeleccionar.Rows.Count == 0)
        {
            CodigoRegla = 1;
            strCodigoPlantilla = "0";
            strDescripcionPlantilla = txtDescripcionPlantilla.Text;
            strCodigoTipoRegla = ddlTipoReglaEvaluacion.SelectedValue;
        }
        else
        {
            CodigoRegla = int.Parse(gvwReglasSeleccionar.Rows[gvwReglasSeleccionar.Rows.Count - 1].Cells[3].Text) + 1;
            strCodigoPlantilla = txtCodigoPlantilla.Text;
        }
        
        ScriptManager.RegisterStartupScript(this, typeof(Page), "Evaluacion", "abrirPopupReglasCentralRiesgo();", true);      
    }

    public void btnModificarRegla_Click(object sender, EventArgs e)
    {
        strAccionRegla = "2";
        strAccionCondicion = "1";

        strCodigoPlantilla = txtCodigoPlantilla.Text;
        strDescripcionPlantilla = txtDescripcionPlantilla.Text;
        strCodigoTipoRegla = ddlTipoReglaEvaluacion.SelectedValue;        

        ScriptManager.RegisterStartupScript(this, typeof(Page), "Evaluacion", "abrirPopupReglasCentralRiesgo();", true);        
    }

    public void btnEliminarRegla_Click(object sender, EventArgs e)
    {        
        ReglaCentralRiesgo oReglas = new ReglaCentralRiesgo();
        oReglas.Accion = 3;
        oReglas.CodigoPlantilla = int.Parse(strCodigoPlantilla);
        oReglas.CodigoTipoIntegrante = int.Parse(strCodigoIntegrante);
        oReglas.CodigoReglaNegocio = int.Parse(strCodigoRegla);
        _presenter.ActualizarReglaNegocio(oReglas);
        oReglas.Accion = 1;//Obtener Todas las Reglas
        _presenter.ObtenerReglaNegocio(oReglas);
        oReglas.Accion = 2;//Obtener Todas las condiciones
        _presenter.ObtenerReglaNegocioCondicion(oReglas);
    }

    public void btnGuardar_Click(object sender, EventArgs e)
    {
        if (Request.QueryString["Accion"] == "2")
        {
            ReglaCentralRiesgo oCabecera = new ReglaCentralRiesgo();
            oCabecera.Accion = 2;
            oCabecera.CodigoPlantilla = int.Parse((string)Session["CodigoPlantilla"]);
            oCabecera.DescripcionPlantilla = strDescripcionPlantilla.ToUpper();
            oCabecera.CodigoTipoPoliticaCredito = int.Parse(ddlTipoReglaEvaluacion.SelectedValue);
            _presenter.ActualizarPoliticaCredito(oCabecera);

            oCabecera.Accion = 1;            
            _presenter.ObtenerPoliticaCredito(oCabecera);      

            MostrarMensajeError("Se registró exitosamente");
        }
        else
        {
            if (ListaReglasTotal.Count > 0 && ListaCondicionesTotal.Count > 0)
            {
                ReglaCentralRiesgo oCabecera = new ReglaCentralRiesgo();
                oCabecera.Accion = int.Parse(Request.QueryString["Accion"]);
                oCabecera.CodigoPlantilla = 0;
                oCabecera.DescripcionPlantilla = txtDescripcionPlantilla.Text.ToUpper().Trim();
                oCabecera.CodigoTipoPoliticaCredito = int.Parse(ddlTipoReglaEvaluacion.SelectedValue);
                int intCodigoPlantilla = _presenter.ActualizarPoliticaCredito(oCabecera);

                for (int i = 0; i < ListaReglasTotal.Count; i++)
                {
                    ReglaCentralRiesgo oReglas = new ReglaCentralRiesgo();
                    oReglas.Accion = int.Parse(Request.QueryString["Accion"]);
                    oReglas.CodigoPlantilla = intCodigoPlantilla;
                    oReglas.CodigoTipoIntegrante = ListaReglasTotal[i].CodigoTipoIntegrante;
                    oReglas.CodigoReglaNegocio = ListaReglasTotal[i].CodigoReglaNegocio;
                    oReglas.DescripcionReglaNegocio = ListaReglasTotal[i].DescripcionReglaNegocio.ToUpper();
                    oReglas.CodigoTipoVariable = ListaReglasTotal[i].CodigoTipoVariable;
                    oReglas.CodigoResultado = ListaReglasTotal[i].CodigoResultado;
                    oReglas.CodigoUsuarioRegistro = 1;
                    _presenter.ActualizarReglaNegocio(oReglas);
                }

                for (int i = 0; i < ListaCondicionesTotal.Count; i++)
                {
                    ReglaCentralRiesgo oCondiciones = new ReglaCentralRiesgo();
                    oCondiciones.Accion = int.Parse(Request.QueryString["Accion"]);
                    oCondiciones.CodigoPlantilla = intCodigoPlantilla;
                    oCondiciones.CodigoTipoIntegrante = ListaCondicionesTotal[i].CodigoTipoIntegrante;
                    oCondiciones.CodigoReglaNegocio = ListaCondicionesTotal[i].CodigoReglaNegocio;
                    oCondiciones.CodigoCondicion = ListaCondicionesTotal[i].CodigoCondicion;
                    oCondiciones.CodigoTipoVariable = ListaCondicionesTotal[i].CodigoTipoVariable;
                    oCondiciones.CodigoTipoOperadorLogico = ListaCondicionesTotal[i].CodigoTipoOperadorLogico;
                    oCondiciones.DescripcionValorComparacion = ListaCondicionesTotal[i].DescripcionValorComparacion;
                    oCondiciones.Tipo_And_Or = ListaCondicionesTotal[i].Tipo_And_Or;
                    oCondiciones.CodigoUsuarioRegistro = 1;
                    _presenter.ActualizarReglaNegocioCondicion(oCondiciones);
                }
                MostrarMensajeError("Se registró exitosamente");
            }
            else
            {
                MostrarMensajeError("Debe agregar reglas y condiciones....");
            }
        }
    }
    public void btnCancelar_Click(object sender, EventArgs e)
    {            
        txtDescripcionPlantilla.Text = string.Empty;
        strAccionCondicion = string.Empty;
        strAccionRegla = string.Empty;
        strCodigoPlantilla = "0";
        Response.Redirect("FormsConReglasCentralRiesgo.aspx");
      
    }

    protected void gvwReglasSeleccionar_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (gvwReglasSeleccionar.Rows.Count > 0)
        {
            GridViewRow row = gvwReglasSeleccionar.SelectedRow;            
            
            strCodigoIntegrante = row.Cells[1].Text;
            strCodigoRegla = row.Cells[3].Text;
            btnModificarRegla.Enabled = true;
            btnEliminarRegla.Enabled = true;
        }
    }
    #region IFormsManReglasCentralRiesgoView Members

    public void ObtenerPoliticaCredito(List<ReglaCentralRiesgo> lst)
    {
        if (lst.Count > 0) {
            txtCodigoPlantilla.Text = lst[0].CodigoPlantilla.ToString();
            txtEstado.Text = lst[0].DescripcionEstado;
            txtFechaIngreso.Text = lst[0].FechaRegistro.ToShortDateString();

        }
    }

    public void MostrarMensajeError(string p)
    {
        Master.MostrarMensaje(p, 0);
    }

    public void CargarParametros(List<ParametroBE> lstParametro)
    {
        UIBindable.Bind(ddlTipoReglaEvaluacion, lstParametro);
    }

    public void CargarVariables(List<ReglaCentralRiesgo> lstVariable)
    {
        throw new NotImplementedException();
    }

    public void ObtenerPoliticaCreditoCabecera(List<CentralRiesgoBE> lst)
    {
        if (lst.Count > 0)
        {
            txtEstado.Text = lst[0].DescripcionEstado;
            txtFechaIngreso.Text = lst[0].FechaRegistro.ToShortDateString();
            ddlTipoReglaEvaluacion.SelectedValue = lst[0].CodigoTipoPoliticaCredito.ToString();
            txtDescripcionPlantilla.Text = lst[0].DescripcionPlantilla;
            txtCodigoPlantilla.Text = lst[0].CodigoListaPlantilla.ToString();
        }
        
    }

    public void ObtenerReglaNegocio(List<ReglaCentralRiesgo> lst)
    {
        UIBindable.Bind(gvwReglasSeleccionar, lst);
    }

    public void ObtenerReglaNegocioCondicion(List<ReglaCentralRiesgo> lst)
    {
        UIBindable.Bind(gvwCondicionesSeleccionar, lst);
    }

    #endregion

    public List<ReglaCentralRiesgo> ListaCondiciones
    {
        get
        {
            if (Session["ListaCondiciones"] == null)
            {
                Session["ListaCondiciones"] = new List<ReglaCentralRiesgo>();
            }
            return (List<ReglaCentralRiesgo>)Session["ListaCondiciones"];
        }
        set { Session["ListaCondiciones"] = value; }

    }
    public List<ReglaCentralRiesgo> ListaCondicionesTotal
    {
        get
        {
            if (Session["ListaCondicionesTotal"] == null)
            {
                Session["ListaCondicionesTotal"] = new List<ReglaCentralRiesgo>();
            }
            return (List<ReglaCentralRiesgo>)Session["ListaCondicionesTotal"];
        }
        set { Session["ListaCondicionesTotal"] = value; }

    }
    public List<ReglaCentralRiesgo> ListaReglas
    {
        get
        {
            if (Session["ListaReglas"] == null)
            {
                Session["ListaReglas"] = new List<ReglaCentralRiesgo>();
            }
            return (List<ReglaCentralRiesgo>)Session["ListaReglas"];
        }
        set { Session["ListaReglas"] = value; }

    }
    public List<ReglaCentralRiesgo> ListaReglasTotal
    {
        get
        {
            if (Session["ListaReglasTotal"] == null)
            {
                Session["ListaReglasTotal"] = new List<ReglaCentralRiesgo>();
            }
            return (List<ReglaCentralRiesgo>)Session["ListaReglasTotal"];
        }
        set { Session["ListaReglasTotal"] = value; }

    }
    public int CodigoRegla
    {
        get
        {
            return (int)Session["CodigoRegla"];
        }
        set { Session["CodigoRegla"] = value; }

    }


    public string strAccionRegla
    {
        get
        {
            return (string)Session["strAccionRegla"];
        }
        set { Session["strAccionRegla"] = value; }
    }
    public string strAccionCondicion
    {
        get
        {
            return (string)Session["strAccionCondicion"];
        }
        set { Session["strAccionCondicion"] = value; }
    }
    public string strCodigoIntegrante
    {
        get
        {
            return (string)Session["CodigoIntegrante"];
        }
        set { Session["CodigoIntegrante"] = value; }
    }
    public string strCodigoRegla
    {
        get
        {
            return (string)Session["strCodigoRegla"];
        }
        set { Session["strCodigoRegla"] = value; }
    }
    public string strDescripcionPlantilla
    {
        get
        {
            return (string)Session["strDescripcionPlantilla"];
        }
        set { Session["strDescripcionPlantilla"] = value; }
    }

    public string strCodigoPlantilla
    {
        get { return (string)Session["CodigoPlantilla"]; }
        set { Session["CodigoPlantilla"] = value; }
    }
    public string strCodigoTipoRegla
    {
        get { return (string)Session["CodigoTipoRegla"]; }
        set { Session["CodigoTipoRegla"] = value; }
    }  
}
